﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Bymed.SpineScan.Service.Interface
{
    /// <summary>
    /// A factory that manage every single service.
    /// </summary>
    public interface IServiceFactory
    {
        /// <summary>
        ///  Create an instance of TestResultService to do any related business logic.
        /// </summary>
        /// <returns>The instance that implements ITestResultService.</returns>
        ITestResultService CreateTestResultService();

        /// <summary>
        ///  Create an instance of TestTrackingService to do any related business logic.
        /// </summary>
        /// <returns>The instance that implements ITestTrackingService.</returns>
        ITestTrackingService CreateTestTrackingService();

        /// <summary>
        ///  Create an instance of PatientService to do any related business logic.
        /// </summary>
        /// <returns>The instance that implements IPatientService.</returns>
        IPatientService CreatePatientService();

        /// <summary>
        ///  Create an instance of DiagnosticMessageReferenceService to do any related business logic.
        /// </summary>
        /// <returns>The instance that implements IDiagnosticMessageReferenceService.</returns>
        IDiagnosticMessageReferenceService CreateDiagnosticMessageReferenceService();

        /// <summary>
        ///  Create an instance of TestResultDiagnosticMessageService to do any related business logic.
        /// </summary>
        /// <returns>The instance that implements ITestResultDiagnosticMessageService.</returns>
        ITestResultDiagnosticMessageService CreateTestResultDiagnosticMessageService();

        /// <summary>
        ///  Create an instance of AttendingDoctorService to do any related business logic.
        /// </summary>
        /// <returns>The instance that implements IAttendingDoctorService.</returns>
        IAttendingDoctorService CreateAttendingDoctorService();

        /// <summary>
        ///  Create an instance of CustomizedTestItemService to do any related business logic.
        /// </summary>
        /// <returns>The instance of CustomizedTestItemService.</returns>
        ICustomizedTestItemService CreateCustomizedTestItemService();

        /// <summary>
        ///  Create an instance of DataSourceManagementService to do any related business logic.
        /// </summary>
        /// <returns>The instance of DataSourceManagementService.</returns>
        DataSourceManagementService CreateDataSourceManagementService();

        /// <summary>
        ///  Create an instance of BasicConfigurationService to do any related business logic.
        /// </summary>
        /// <returns>The instance of BasicConfigurationService.</returns>
        BasicConfigurationService CreateBasicConfigurationService();

        /// <summary>
        ///  Create an instance of DeviceConfigurationService to do any related business logic.
        /// </summary>
        /// <returns>The instance of DeviceConfigurationService.</returns>
        DeviceConfigurationService CreateDeviceConfigurationService();

        /// <summary>
        ///  Create an instance of GenuineCheckService to do any related business logic.
        /// </summary>
        /// <returns>The instance of GenuineCheckService.</returns>
        GenuineCheckService CreateGenuineCheckService();
    }
}
